<?php
//模拟SAE的memcache的一些函数，利用PHP版本的memcached客户端脚本
//需要允许一些stream操作函数。如stream_set_timeout、stream_set_write_buffer
//fwrite fread等 对socket读写的函数
//无须打开php_memcache.扩展。
//在开发时，作为一个helper存在，SAE上线后也可以保留


if(!function_exists('memcache_init')){
	require_once 'memcached-client.php';
	function memcache_init($debug=FALSE)
	{
		 $mmc = new memcached(array(
				   'servers' => array('127.0.0.1:11211',),
				   'debug'   => $debug,
				   'compress_threshold' => 10240,
				   'persistant' => FALSE));
		//尝试连接并加入一个key测试连接，失败返回false
		$token = @$mmc->set('conn_timestamp',time());
		if(!$token) return false;

		//if( !is_object($mmc )) return false;
		//成功后删除该key
		@$mmc->delete('conn_timestamp');
		return $mmc;		   
	}

}

if(!function_exists('memcache_set')){
	//此处可不加&，如果为兼容php4还是加一下
	function memcache_set(&$mmc,$key,$val,$flag=FALSE,$exp=0)
	{
		if(!$mmc) return false;
		return $mmc->set ($key, $val, $exp);
	}
}

if(!function_exists('memcache_add')){
	function memcache_add(&$mmc,$key,$val,$flag=FALSE,$exp=0)
	{
		if(!$mmc) return false;
		return $mmc->add ($key, $val, $exp);
	}
}	
if(!function_exists('memcache_get')){
	function memcache_get(&$mmc,$key)
	{
		if(!$mmc) return false;
		return $mmc->get($key);
	}
}	

//下列方法SAE文档未显式提及，但应该支持
if(!function_exists('memcache_replace')){
	function memcache_replace(&$mmc,$key,$val,$exp=0)
	{
		if(!$mmc) return false;
		return $mmc->replace ($key, $value, $exp);
	}
}

if(!function_exists('memcache_delete')){
	function memcache_delete (&$mmc,$key, $time = 0)
	{
		if(!$mmc) return false;
		return $mmc->delete ($key, $time);
	}
}

if(!function_exists('memcache_close')){
	function memcache_close(&$mmc)
	{
		if(!$mmc) return ;
		$mmc->disconnect_all();
		unset($_SERVER['mmc']);
		
	}
}